/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Controller.exceptions.NonexistentEntityException;
import Controller.exceptions.PreexistingEntityException;
import Entities.*;
import java.io.Serializable;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

/**
 *
 * @author Nico
 */
public class EntityEquipoxjugadorJpaController implements Serializable {

    public EntityEquipoxjugadorJpaController(EntityManagerFactory emf) {
        this.emf = emf;
    }
    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void create(EntityEquipoxjugador entityEquipoxjugador) throws PreexistingEntityException, Exception {
        if (entityEquipoxjugador.getEntityEquipoxjugadorPK() == null) {
            entityEquipoxjugador.setEntityEquipoxjugadorPK(new EntityEquipoxjugadorPK());
        }
        entityEquipoxjugador.getEntityEquipoxjugadorPK().setIdJugador(entityEquipoxjugador.getEntityJugador().getId());
        entityEquipoxjugador.getEntityEquipoxjugadorPK().setIdEquipo(entityEquipoxjugador.getEntityEquipo().getId());
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            EntityJugador entityJugador = entityEquipoxjugador.getEntityJugador();
            if (entityJugador != null) {
                entityJugador = em.getReference(entityJugador.getClass(), entityJugador.getId());
                entityEquipoxjugador.setEntityJugador(entityJugador);
            }
            EntityEstado idEstado = entityEquipoxjugador.getIdEstado();
            if (idEstado != null) {
                idEstado = em.getReference(idEstado.getClass(), idEstado.getId());
                entityEquipoxjugador.setIdEstado(idEstado);
            }
            EntityEquipo entityEquipo = entityEquipoxjugador.getEntityEquipo();
            if (entityEquipo != null) {
                entityEquipo = em.getReference(entityEquipo.getClass(), entityEquipo.getId());
                entityEquipoxjugador.setEntityEquipo(entityEquipo);
            }
            em.persist(entityEquipoxjugador);
            if (entityJugador != null) {
                entityJugador.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                entityJugador = em.merge(entityJugador);
            }
            if (idEstado != null) {
                idEstado.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                idEstado = em.merge(idEstado);
            }
            if (entityEquipo != null) {
                entityEquipo.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                entityEquipo = em.merge(entityEquipo);
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            if (findEntityEquipoxjugador(entityEquipoxjugador.getEntityEquipoxjugadorPK()) != null) {
                throw new PreexistingEntityException("EntityEquipoxjugador " + entityEquipoxjugador + " already exists.", ex);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(EntityEquipoxjugador entityEquipoxjugador) throws NonexistentEntityException, Exception {
        entityEquipoxjugador.getEntityEquipoxjugadorPK().setIdJugador(entityEquipoxjugador.getEntityJugador().getId());
        entityEquipoxjugador.getEntityEquipoxjugadorPK().setIdEquipo(entityEquipoxjugador.getEntityEquipo().getId());
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            EntityEquipoxjugador persistentEntityEquipoxjugador = em.find(EntityEquipoxjugador.class, entityEquipoxjugador.getEntityEquipoxjugadorPK());
            EntityJugador entityJugadorOld = persistentEntityEquipoxjugador.getEntityJugador();
            EntityJugador entityJugadorNew = entityEquipoxjugador.getEntityJugador();
            EntityEstado idEstadoOld = persistentEntityEquipoxjugador.getIdEstado();
            EntityEstado idEstadoNew = entityEquipoxjugador.getIdEstado();
            EntityEquipo entityEquipoOld = persistentEntityEquipoxjugador.getEntityEquipo();
            EntityEquipo entityEquipoNew = entityEquipoxjugador.getEntityEquipo();
            if (entityJugadorNew != null) {
                entityJugadorNew = em.getReference(entityJugadorNew.getClass(), entityJugadorNew.getId());
                entityEquipoxjugador.setEntityJugador(entityJugadorNew);
            }
            if (idEstadoNew != null) {
                idEstadoNew = em.getReference(idEstadoNew.getClass(), idEstadoNew.getId());
                entityEquipoxjugador.setIdEstado(idEstadoNew);
            }
            if (entityEquipoNew != null) {
                entityEquipoNew = em.getReference(entityEquipoNew.getClass(), entityEquipoNew.getId());
                entityEquipoxjugador.setEntityEquipo(entityEquipoNew);
            }
            entityEquipoxjugador = em.merge(entityEquipoxjugador);
            if (entityJugadorOld != null && !entityJugadorOld.equals(entityJugadorNew)) {
                entityJugadorOld.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                entityJugadorOld = em.merge(entityJugadorOld);
            }
            if (entityJugadorNew != null && !entityJugadorNew.equals(entityJugadorOld)) {
                entityJugadorNew.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                entityJugadorNew = em.merge(entityJugadorNew);
            }
            if (idEstadoOld != null && !idEstadoOld.equals(idEstadoNew)) {
                idEstadoOld.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                idEstadoOld = em.merge(idEstadoOld);
            }
            if (idEstadoNew != null && !idEstadoNew.equals(idEstadoOld)) {
                idEstadoNew.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                idEstadoNew = em.merge(idEstadoNew);
            }
            if (entityEquipoOld != null && !entityEquipoOld.equals(entityEquipoNew)) {
                entityEquipoOld.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                entityEquipoOld = em.merge(entityEquipoOld);
            }
            if (entityEquipoNew != null && !entityEquipoNew.equals(entityEquipoOld)) {
                entityEquipoNew.getEntityEquipoxjugadorCollection().add(entityEquipoxjugador);
                entityEquipoNew = em.merge(entityEquipoNew);
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                EntityEquipoxjugadorPK id = entityEquipoxjugador.getEntityEquipoxjugadorPK();
                if (findEntityEquipoxjugador(id) == null) {
                    throw new NonexistentEntityException("The entityEquipoxjugador with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(EntityEquipoxjugadorPK id) throws NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            EntityEquipoxjugador entityEquipoxjugador;
            try {
                entityEquipoxjugador = em.getReference(EntityEquipoxjugador.class, id);
                entityEquipoxjugador.getEntityEquipoxjugadorPK();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The entityEquipoxjugador with id " + id + " no longer exists.", enfe);
            }
            EntityJugador entityJugador = entityEquipoxjugador.getEntityJugador();
            if (entityJugador != null) {
                entityJugador.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                entityJugador = em.merge(entityJugador);
            }
            EntityEstado idEstado = entityEquipoxjugador.getIdEstado();
            if (idEstado != null) {
                idEstado.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                idEstado = em.merge(idEstado);
            }
            EntityEquipo entityEquipo = entityEquipoxjugador.getEntityEquipo();
            if (entityEquipo != null) {
                entityEquipo.getEntityEquipoxjugadorCollection().remove(entityEquipoxjugador);
                entityEquipo = em.merge(entityEquipo);
            }
            em.remove(entityEquipoxjugador);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<EntityEquipoxjugador> findEntityEquipoxjugadorEntities() {
        return findEntityEquipoxjugadorEntities(true, -1, -1);
    }

    public List<EntityEquipoxjugador> findEntityEquipoxjugadorEntities(int maxResults, int firstResult) {
        return findEntityEquipoxjugadorEntities(false, maxResults, firstResult);
    }

    private List<EntityEquipoxjugador> findEntityEquipoxjugadorEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(EntityEquipoxjugador.class));
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public EntityEquipoxjugador findEntityEquipoxjugador(EntityEquipoxjugadorPK id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(EntityEquipoxjugador.class, id);
        } finally {
            em.close();
        }
    }
    
     public List<EntityEquipoxjugador> findEntityEquipoEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(EntityEquipo.class));
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }
    

    public int getEntityEquipoxjugadorCount() {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            Root<EntityEquipoxjugador> rt = cq.from(EntityEquipoxjugador.class);
            cq.select(em.getCriteriaBuilder().count(rt));
            Query q = em.createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }
         public boolean deleteEquipoxJugador(EntityEquipoxjugador entidad)
         {
            EntityManager em = getEntityManager();
            try
            {
             em.getTransaction().begin();
             em.remove(entidad);
//             EntityCancha aux = em.find(EntityCancha.class, id);
//             em.remove(aux); 
             em.getTransaction().commit();
           
             return true;
            } 
            finally 
            {
             em.close();
             return false;
            } 
         }
    }
     

